/*
	在node中有一个全局对象 global，它的作用和网页中window类似
		在全局中创建的变量都会作为global的属性保存
		在全局中创建的函数都会作为global的方法保存

	当node在执行模块中的代码时，它会首先在代码的最顶部，添加如下代码
 			function (exports, require, module, __filename, __dirname) {
 	在代码的最底部，添加如下代码
 			}
    可以通过打印arguments.callee属性来证明：console.log(arguments.callee + "");

 	实际上模块中的代码都是包装在一个函数中执行的，并且在函数执行时，同时传递进了5个实参
		 exports
		 	- 该对象用来将变量或函数暴露到外部
		 require
		 	- 函数，用来引入外部的模块
		 module
		 	- module代表的是当前模块本身
		 	- exports就是module的属性
		 	- 既可以使用 exports 导出，也可以使用module.exports导出
		 __filename
 			E:\WebstormProjects\nodeJsStudy\modules\global.js
 			- 当前模块的完整路径
	  	 __dirname
 			E:\WebstormProjects\nodeJsStudy\modules
 			- 当前模块所在文件夹的完整路径

*/
var a = 10;//全局变量，不会作为global的属性保存
b = 20;//局部变量，会作为global的属性保存
console.log(global.a);//打印出undefined
console.log(global.b);//打印出20

/*
	arguments.callee
		- 这个属性保存的是当前执行的函数对象
*/
console.log(arguments.callee + "");
console.log(arguments.length);//打印出函数参数的个数

console.log("require="+require);
console.log(module);//代表的是当前模块本身
console.log(module.exports);
console.log(exports);
console.log("module.exports和exports是同一个对象的结果是："+(module.exports == exports));
console.log("__filename="+__filename);
console.log("__dirname="+__dirname);